/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package pessoas.presenter;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileNotFoundException;
import javax.swing.JOptionPane;
import pessoas.collection.Pessoas;
import pessoas.interfaces.IConfiguraViewInclusao;
import pessoas.model.Pessoa;
import pessoas.view.InclusaoPessoaView;

/**
 *
 * @author jakson
 */
public class EditarPessoaPresenter implements IConfiguraViewInclusao {

    private InclusaoPessoaView view;
   
    public EditarPessoaPresenter(InclusaoPessoaView view,final Pessoa p) {
        this.view = view;

        view.getBtnFechar().addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
                fechar();
            }
        });

        view.getBtnSalvar().addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
                try {
                    editarPessoa(p);
                } catch (Exception ex) {
                    JOptionPane.showMessageDialog(null, "Ocorreu um erro não esperado ao editar o cadastro. Informe ao seu administrador");
                }
            }
        });
        configurarIncluirPresenter(p);
        view.setLocationRelativeTo(view);
        view.setVisible(true);
    }

    private void fechar() {
        view.dispose();
    }

    private void editarPessoa(Pessoa p) throws FileNotFoundException, Exception {
        String nome = view.getTxtNome().getText();
        String telefone = view.getTxtTelefone().getText();
        Pessoas.getInstancia().editarPessoa(p.getTelefone());

        if ((!nome.equals("")) && (view.getTxtTelefone().isEditValid())) {
            Pessoa pe = new Pessoa(nome, telefone);
            if (!Pessoas.getInstancia().add(pe)) {
                throw new Exception("Pessoa já existente, Edição não permitida");
            } else {
                JOptionPane.showMessageDialog(view, nome + " editado com sucesso!");
                view.dispose();

            }
        } else {
            throw new Exception("Você precisa informar os campos");
        }

    }

    @Override
    public void configurarIncluirPresenter(Pessoa p) {
        view.getLblTitulo().setText("Editar Cadastro");
        view.getBtnSalvar().setText("Editar");
        view.getTxtNome().setText(p.getNome());
        view.getTxtTelefone().setText(p.getTelefone());
    }
}
